package br.com.velp.sudecap.mb.usuario;

import br.com.velp.sudecap.comum.BaseController;
import br.com.velp.sudecap.ws.UsuarioResultadoConsultaDTO;
import br.com.velp.sudecap.enumerator.TipoMensagemEnum;
import br.com.velp.sudecap.util.CriptografiaUtil;
import br.com.velp.sudecap.util.MensagemUtil;
import br.com.velp.sudecap.ws.WSLogin;
import br.com.velp.sudecap.ws.WSLogin_Service;
import org.lindbergframework.spring.scope.AccessScoped;
import org.springframework.stereotype.Controller;

/**
 * <sumario>
 * <objetivo>"Rastreabilidade"</objetivo>
 * <autor>EDUARDO SANTOS DE OLIVEIRA</autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 10.04.2013 </data_criacao>
 * <data_ultima_alteracao> 13.12.2013 </data_ultima_alteracao>
 * <requisito_afetado> N/A </requisito_afetado>
 * <descricao> Managead Bean Responsável Pela Alteração de Senha do Usuário </descricao>
 * </sumario>
 */
@Controller("alterarSenha")
@AccessScoped
public class AlterarSenha extends BaseController {
    
    public static final Long serialVersionUID = 1l;
    
    private String senhaAtual;
    private String novaSenha;
    private String repitaSenha;
    
    public void confirmarAlteracao() {
        
        String senhaCriptografada = CriptografiaUtil.criptografar(CriptografiaUtil.ALGORITMO.MD5, this.senhaAtual);
        
        if (!senhaCriptografada.equals(getContexto().getUsuario().getSenha())) {
            exibirMensagem(TipoMensagemEnum.ERRO, MensagemUtil.getMensagem("usuarioSenhaAtualNaoConfere"));
            return;
        }
        
        if (!this.novaSenha.equals(this.repitaSenha)) {
            exibirMensagem(TipoMensagemEnum.ERRO, MensagemUtil.getMensagem("usuarioCamposSenhaNaoConferem"));
            return;
        }
        
        try {
            
            WSLogin_Service loginService = new WSLogin_Service();
            WSLogin wsLogin = loginService.getWSLoginPort();
            
            UsuarioResultadoConsultaDTO usuarioLogado = getContexto().getUsuario();
            wsLogin.alterarSenhaUsuario(usuarioLogado.getId(), this.novaSenha);
            
            ocultarPainelDialog("pnAlterarSenhaUsuario");
            exibirMensagem(TipoMensagemEnum.INFORMACAO, MensagemUtil.getMensagem("operacao_realizada_sucesso"));
            
            usuarioLogado.setSenha(CriptografiaUtil.criptografar(CriptografiaUtil.ALGORITMO.MD5, this.novaSenha));
            
        } catch (Exception ex) {
            
            tratarExcessao(ex);
            
        }
        
    }
    
    // <editor-fold desc="GETTERS AND SETTERS" defaultstate="collapsed">        
    public String getNovaSenha() {
        return novaSenha;
    }

    public String getSenhaAtual() {
        return senhaAtual;
    }

    public void setSenhaAtual(String senhaAtual) {
        this.senhaAtual = senhaAtual;
    }

    public void setNovaSenha(String novaSenha) {
        this.novaSenha = novaSenha;
    }

    public String getRepitaSenha() {
        return repitaSenha;
    }

    public void setRepitaSenha(String repitaSenha) {
        this.repitaSenha = repitaSenha;
    }
    // </editor-fold>        
    
}
